package service

import (
	"context"
	"fmt"
	"gc-rds-ha/internal/common"
	"gc-rds-ha/internal/service/mysql_sync"

	"github.com/robfig/cron/v3"
)

func TaskRun() {
	//开启秒级 :秒(0-59) 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-6)
	c := cron.New(cron.WithSeconds(), cron.WithChain(cron.Recover(cron.DefaultLogger)))
	s := 5
	if common.AgentConfig.TaskSecond > 0 {
		s = common.AgentConfig.TaskSecond
	}

	// 定时同步拓扑信息
	_, _ = c.AddFunc(fmt.Sprintf("*/%d * * * * *", s), func() {
		//log.Info(111)
		_, _ = mysql_sync.DoOrchSync(context.Background(), nil)
	})

	_, _ = c.AddFunc(fmt.Sprintf("*/%d * * * * *", s), func() {
		//log.Info(111)
		mysql_sync.GetSyncClusterType("sentinel").Recover()
	})

	// 定时监控proxy几点状态 todo 优化下代买适配orch和sentinel监控mysql集群拓扑信息

	// 参考工具
	// http://jsrun.net/app/cron
	c.Start()
}
